﻿using BCCommon;
using BCCommon.TMS.Transport;
using BCDto.Sim.Admin.Admin;
using BCDto.TMS.VehicleTransportBusinessConfigOverwrite;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BCService.TMS.VehicleTransportBusinessConfigOverwrite
{
    /// <summary>
    /// 车辆运输业务配置重写
    /// </summary>
    public interface IVehicleTransportBusinessConfigOverwriteService
    {
        /// <summary>
        /// 添加车辆运输业务配置重写
        /// </summary>
        /// <param name="admin">管理员信息</param>
        /// <param name="requestDto">车辆运输业务配置新增重写信息</param>
        /// <returns></returns>
        VehicleTransportBusinessConfigOverwriteDto Create(AdminDto admin, VehicleTransportBusinessConfigOverWriteRequestDto requestDto);

        /// <summary>
        /// 修改车辆运输业务配置重写
        /// </summary>
        /// <param name="admin">管理员信息</param>
        /// <param name="vehicleTransportBusinessConfigOverwriteId">车辆运输业务配置重写Id</param>
        /// <param name="putDto">车辆运输业务配置修改信息</param>
        /// <returns></returns>
        VehicleTransportBusinessConfigOverwriteDto Update(AdminDto admin, int vehicleTransportBusinessConfigOverwriteId, VehicleTransportBusinessConfigOverwritePutDto putDto);

        /// <summary>
        /// 删除车辆运输业务配置重写
        /// </summary>
        /// <param name="admin">管理员信息</param>
        /// <param name="vehicleTransportBusinessConfigOverwriteId">车辆运输业务配置重写Id</param>
        void Delete(AdminDto admin, int vehicleTransportBusinessConfigOverwriteId);

        /// <summary>
        /// 启用/禁用车辆运输业务配置重写
        /// </summary>
        /// <param name="admin">管理员信息</param>
        /// <param name="vehicleTransportBusinessConfigOverwriteId">车辆运输业务配置重写Id</param>
        /// <param name="enabled">是否启用</param>
        /// <returns></returns>
        VehicleTransportBusinessConfigOverwriteDto UpdateEnabled(AdminDto admin, int vehicleTransportBusinessConfigOverwriteId, bool enabled);

        /// <summary>
        /// 获取车辆运输业务配置重写(分页)
        /// </summary>
        /// <param name="agentRecordId">代理商ID</param>
        /// <param name="transportBusiness">运输业务</param>
        /// <param name="provinceCode">省份编码</param>
        /// <param name="cityCode">市编码</param>
        /// <param name="countyCode">区县编码</param>
        /// <param name="pageIndex">页号</param>
        /// <param name="pageSize">每页数据条数</param>
        /// <returns></returns>
        PageableList<VehicleTransportBusinessConfigOverwriteViewDto> Query(long? agentRecordId, TransportBusinessType? transportBusiness, string provinceCode, string cityCode, string countyCode, int pageIndex, int pageSize);
    }
}
